Visualización de datos en R
GRAMÁTICA DE GRÁFICOS Y GGPLOT2
Pablo Ortiz (@pabort)
Sociedad Argentina de Estadística
Encuentro 1: Gramática de gráficos y {ggplot2}
Encuentro 2: Extensiones de {ggplot2}
Encuentro 3: Visualizaciones dinámicas ({plotly}, {gganimate}, etc.)
dplyr. tidyr, data.table)¿Cómo está “formado” un gráfico? 🤔
¿Cómo está “formado” un gráfico?
La representación de los datos define qué se puede hacer con ellos
La gramática requiere que tome una determinada estructura: tidy
Permite que un dataset genérico se entendido por un sistema gráfico:
Aesthetic mapping: vincula las variables de la base de datos con las propiedades gráficas en la geometría utilizada.
Facet mapping: vincula las variables de la base de datos a los paneles en un diseño de facetas.
La base de datos, en general, no contiene los valores que se buscan representar/visualizar.
Es necesario transformar las variables de interés
En algunos tipos de gráficos se encuentran implícitas, mientras que en otros será necesario un “preprocesamiento” de la base de datos.
A veces, los datos no representan las propiedades gráficas quese desean mostrar
Está condicionado al tipo de variable, implicando ciertas formas de representación
Implicará una interpretación específica del gráfico
Es posible más por menos
Representa las magnitudes o valores de interés en el espacio
Interpretación estética como representación gráfica
Define el tipo de gráfico a utilizar: puntos, líneas, barras…
Define paneles con subgráficos atendiendo a variables adicionales de interés
Se toma en cuenta las variaciones de estas variables de particulares
La disposición de los paneles pueden tener una interpretación en si misma
Define cómo serán mapeados/asignados los datos al espacio
Tiene impacto visual en la representación gráfica
Todas las partes del gráfico que no están vinculados a los datos
Títulos, fuentes, tipografía, anotaciones, tipografías, colores, etc.
{ggplot2}{ggplot2}La Gramática de Gráficos es un sistema de diseño
{ggplot2} es una librería que busca implementar este sistema (desde luego, no lo hace al pie de la letra)
{ggplot2} no es la única implementación
especie: Adelia, Papúa, Barbijo
isla (donde se encontraron): Torgersen, Dream, Biscoe
pico_long_mm: longitud (largo) del pico en mm
pico_prof_mm: profundidad (ancho) del pico en mm
aleta_lon_mm: longitud (largo) de la aleta en mm
peso_g: peso en gramos
sexo: macho, hembra
anio: año en el que fue visto/medido
colour}Vinculadas a la geometría utilizada
Cada geometría tiene una estadística (stat) definida por default
Se puede incorporar como una capa del gráfico, o como un argumento en geom_*().
Cada elemento dentro de aes() tiene una escala (si no se especifica, se provee por default)
Se puede acceder y modificar mediante scale_<aesthetic>_<type>()
<type>(): genérico (discreto, continuo) o específico (por ejemplo, área)
Permite separar los datos generando múltiples graficos dispuestos en paneles (matrices)
Permite combinar múltiples gráficos separados relacionados a través de alguna/s variables/s
ggplot2 permite dos tipos: facet_grid y facet_wrap
Define cómo se se traslada los datos a graficar sobre el “lienzo”: cómo se interpretan x e y
Límites y transformaciones pude ser aplicadas a la escalas o a las coordenadas
Cobra relevancia en cartografía: mapear proyecciones
Se trata de aspectos estéticos y visuales no relacionados con los datos
Pueden usarse temas completos que vienen predefinidos en la librería ggplot2
ggtheme extiende la lista de temas de ggplot2
Pueden aplicarse completos, o modificar parcialmente ciertos elementos
Los temas se definen de manera jerárquica
theme_minimal() define un tema completo
ggplot(data = df,
mapping = aes(x = aleta_long_mm, y = peso_g, colour=especie)) +
geom_point() +
labs(title = "Tamaño de de los pingüinos",
subtitle = "Peso y longitud de las aletas según especie",
caption = "Fuente: XXXX",
x = "Longitud de las aletas (mm)",
y = "Peso (g)",
colour = "Especies")+
theme_minimal() theme() permite modificar/sobreescribir los elementos de tema por default
ggplot(data = df,
mapping = aes(x = aleta_long_mm, y = peso_g, colour=especie)) +
geom_point(na.rm = TRUE, size = 1, alpha=0.8 ) +
geom_smooth(method = "lm", aes(colour=especie)) +
labs(title = "Tamaño de de los pingüinos",
subtitle = "Peso y longitud de las aletas según especie",
caption = "Fuente: XXXX",
x = "Longitud de las aletas (mm)",
y = "Peso (g)",
colour = "Especies")+
theme_minimal() +
theme(legend.position = 'bottom',
plot.title.position = 'plot',
plot.caption = element_text(face = 'italic'),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank())Pablo Ortiz | pablo.ortiz@unc.edu.ar | SAE 2023